﻿using System;
using System.Data;
using System.Data.SqlClient;

/// <summary>
/// ODS global para ontener información de la base de datos dinámicamente (eficientemente)
/// dependiendo de los valores que existan en la base de datos o del número que se quieran
/// visualizar en el ListView
/// </summary>
public class GlobalODS
{
    /* Ingresa los valores al ListView de las últimas cuentas de alumnos que no han sido validadas
     * param startRowIndex: el número de row inicial del ListView
     * param maximumRows: el último row que es contado
     * param QueryString: Contiene dos querys concatenados, que al hacerles split con el caracter '#'
     *                    en el primer índice se regresa el query para el ODSDataRetriever y el
     *                    segundo índice el query para el método ODSRowsDataCount
     */
    public DataTable ODSDataRetriever(Int32 startRowIndex, Int32 maximumRows, String QueryString)
    {
        startRowIndex = startRowIndex + 1;
        Int32 lastRow = startRowIndex + (maximumRows - 1);

        String[] selectQueryString = QueryString.Split('#');

        DataTable dataTableObject = new DataTable();
        using (SqlCommand selectQueryCommand = new SqlCommand(selectQueryString[0]))
        {
            selectQueryCommand.Parameters.Add(new SqlParameter("@startRowIndex", startRowIndex));
            selectQueryCommand.Parameters.Add(new SqlParameter("@lastRow", lastRow));
            DatabaseConnection dbCon = new DatabaseConnection();
            using (SqlDataAdapter dataAdapter = dbCon.DataAdapter(selectQueryCommand))
            {
                dataAdapter.Fill(dataTableObject);
            }
            dbCon.CloseConnection();
        }
        return dataTableObject;
    }


    // Regresa el número de solicitudes que se han generado hasta la fecha
    public Int32 ODSRowsDataCount(String QueryString)
    {
        String[] selectQueryString = QueryString.Split('#');
        using (SqlCommand getNumberRows = new SqlCommand(selectQueryString[1]))
        {
            DatabaseConnection dbCon = new DatabaseConnection();
            Int32 numberRows = dbCon.ExecuteScalar(getNumberRows);
            dbCon.CloseConnection();
            return numberRows;
        }
    }

}